package com.shg.service;

import java.util.List;

import com.shg.bean.Book;
import com.shg.bean.BuyItem;
import com.shg.bean.PageView;
import com.shg.bean.QueryResult;


public interface BookService extends BasiceDao<Book>{
	/**
	 * 获取浏览过的书籍信息
	 * @param entity 实体对象
	 * @param idList id数组
	 * @return
	 */
	public List<Book> getHistory(Class<Book> entity,String[] idList)throws Exception;
	/**
	 * 分类查询
	 * @param entity 实体对象
	 * @return
	 */
	public List<Book> getForType(Class<Book> entity,String shopID)throws Exception;
	/**
	 * 根据ID查询书籍、店铺、在服务员信息
	 * @param id书籍的ID
	 */
	public Book getBook(String id)throws Exception;
	
	/**
	 * 店铺精品（推荐的书籍）
	 * @param entity查询的实体对象
	 * @param firstResult 查询的起始位置
	 * @param maxResult 需要查询的记录数
	 */
	public QueryResult<Book> getRecommend(String shopid,int firstResult,int maxResult)throws Exception;
	/**
	 * 首页推荐书籍视图
	 * @param pageView
	 * @return
	 * @throws Exception 
	 */
	public QueryResult<Book> getRecommend(PageView<Book> pageView) throws Exception;
	/**
	 * 查询新书热卖，1、按时间排序 2、热卖
	 * @param shopid 店铺ID
	 * @param firstResult 查询的起始位置
	 * @param maxResult 每页返回的最大的记录数
	 * @return
	 */
	public QueryResult<Book> getNewBook(String shopid,int firstResult,int maxResult)throws Exception;
	/**
	 * 更新书籍的推荐状态
	 * @param bookid 书籍的ID列表
	 * @param state书籍的状态 1、推荐 0、取消推荐
	 */
	public void updateRecommend(String[] bookid,int state)throws Exception;
	/**
	 * 书籍的上、下架
	 * @param bookid书籍的ID数组
	 * @param state状态1.上架、2.待审核，3.问题书籍，4、售出书籍
	 */
	public void updateShow(String[] bookid,int state)throws Exception;
	/**
	 * 购物车
	 * @param list 所购书籍
	 * @return
	 */
	public List<Book> getCatBook(List<BuyItem> list)throws Exception;
	/**
	 * 获取最受欢迎的书籍
	 */
	public QueryResult<Book> getLove(String shopId,PageView<Book> pageView)throws Exception;
	/**
	 * 更具ID查询所有的书籍
	 * @param ids
	 * @return
	 */
	public List<Book> getByIds(String[] ids)throws Exception;
	/**
	 * 查询指定类下的所有书籍 包括子类型
	 * @param pageView
	 * @param ids
	 * @return
	 * @throws Exception
	 */
	public QueryResult<Book> getTypeList(PageView<Book> pageView,String bookid)throws Exception;
	/**
	 * 查询店铺推荐的书籍
	 * @param pageView
	 * @return
	 * @throws Exception
	 */
	public QueryResult<Book> getShopRecommend(PageView<Book> pageView)throws Exception;
	/**
	 * 分页查询指定类型下的所有数据
	 * @param parent 类型
	 * @param pageView	分页工具
	 * @return
	 * @throws Exception
	 */
	public QueryResult<Book> getYouLove(String typeId,PageView<Book> pageView)throws Exception;
	/**
	 * 顶一下 自己喜欢的书籍，提高书籍的排名
	 * @param bookid
	 * @throws Exception
	 */
	public void updateLove(String bookid)throws Exception;
	/**
	 * 根据书籍类型查询店铺的书籍
	 * @param view
	 * @param typeId
	 * @return
	 * @throws Exception
	 */
	public QueryResult<Book> getShopTypeList(PageView<Book> view ,String shopid, String typeId)throws Exception;
	/**
	 * 将这本书籍设置为禁书
	 * @param book
	 */
	public void updateAuditing(Book book)throws Exception;
	/**
	 * 查询书籍,审核处理
	 * @param firstResult
	 * @param maxResult
	 * @return
	 * @throws Exception
	 */
	public QueryResult<Book> getAuditingBook(int firstResult,int maxResult)throws Exception;
	
}
